/*
 * Created on Apr 25, 2005
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package br.ufmg.dees.insane.ui.rich.learn.learn_view;
import javax.swing.JFrame;

import br.ufmg.dees.insane.ui.rich.learn.learn_controller.Controller;
import br.ufmg.dees.insane.ui.rich.learn.learn_view.command.Command;
import br.ufmg.dees.insane.ui.rich.learn.learn_view.command.RedoCommand;
import br.ufmg.dees.insane.ui.rich.learn.learn_view.command.UndoCommand;


/**
 * @author roque
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public abstract class IView{
	
    private DrawingArea da;
    private ViewState 	vs;
    private Controller  controller;
 
    public IView(){
    
    } 
    
    /**
     * @return the current drawing area
     */
    public DrawingArea getDrawingArea(){
    	return this.da;
    }

    /**
     * @param da The Drawing Area
     */
    public void setDrawingArea(DrawingArea da){
    	this.da = da;
    }
    
    /**
     * @return vs 
     */
    public ViewState getViewState(){
    	return this.vs;
    }
    
    /**
     * @param vs set the state of this view
     */
    public void setViewState(ViewState vs){
    	this.vs = vs;
    }
 
    /**
     * @return controller return the controller of this view
     */
    public Controller getController(){
    	return this.controller;
    }
    
    public void setController(Controller controller){
    	this.controller = controller;
    }
    
    public abstract JFrame getInterface();
    
    public abstract void setInterface(JFrame j);

    public abstract void setCoord(String x, String y);
    
    public abstract void setMessage(String m);
    
    public abstract void init( );

    public abstract void exit( );
    
    public abstract UndoCommand getUndoCommand( );

    public abstract RedoCommand getRedoCommand( );
    
    //public abstract boolean closeModel( );
    
    public abstract void addToUndo(Command c );
    
    public abstract void addToRedo(Command c );
    
    public abstract void setStateButtons();
    
    public abstract void nothingToUndo();
    
    public abstract void nothingToRedo();

}

